package com.robosense.datacenter.dynamic.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**************************************************************************************
 * swagger通过注解表明该接口会生成文档，包括接口名、请求方法、参数、返回信息的等等。
 *
 * @Api：修饰整个类，描述Controller的作用
 * @ApiOperation：描述一个类的一个方法，或者说一个接口
 * @ApiParam：单个参数描述
 * @ApiModel：用对象来接收参数
 * @ApiProperty：用对象接收参数时，描述对象的一个字段
 * @ApiResponse：HTTP响应其中1个描述
 * @ApiResponses：HTTP响应整体描述
 * @ApiIgnore：使用该注解忽略这个API
 * @ApiError ：发生错误返回的信息
 * @ApiImplicitParam：一个请求参数
 * @ApiImplicitParams：多个请求参数
 * 在线文档的访问地址:http://localhost:8080/swagger-ui.html
 ************************************************************************************/
@EnableSwagger2
@Configuration
public class Swagger2Config {

    @Bean
    public Docket createSwagger2Api() {
        String title = "DataCenter 数据中心API";
        String description = "DataCenter Provide API Interface For EveryOne";
        String veresion = "1.0";
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(
                        new ApiInfoBuilder().title(title).description(description).version(veresion).build()
                ).select().apis(RequestHandlerSelectors.basePackage("com.robosense.datacenter"))
                .paths(PathSelectors.any()).build();
    }

}
